Stack = require("./stack.js");
/**
 * -- 编写一个函数判断字符串中的括号是否合法（括号成对出现）；
 * eg:
 * sdf(ds(ew(we)rw)rwqq)qwewe   合法
 * (sd(qwqw)sd(sd))             合法
 * ()()sd()(sd()fw))(           不合法
 *
 * @author lmay.Zhou
 * @since 2019/4/7 22:36 星期日
 * @qq 379839355
 * @email lmay@lmaye.com
 */
function isLegalBrackets(str) {
    // 初始化栈
    let stack = new Stack.Stack();
    for(let i=0; i<str.length; ++i) {
        let it = str[i];
        if("(" === it) {
            // 如果为左括号压入
            stack.push("(");
        } else if(")" === it) {
            if(stack.isEmpty()) {
                // 如果栈为空，则不合法
                return false;
            }
            // 否则栈顶弹出
            stack.pop();
        }
    }
    return stack.isEmpty();
}

console.log(isLegalBrackets("sdf(ds(ew(we)rw)rwqq)qwewe"));
console.log(isLegalBrackets("()()sd()(sd()fw))("));
console.log(isLegalBrackets("(sd(qwqw)sd(sd))"));
console.log(isLegalBrackets(")(sd(qwqw)sd(sd))"));
